package numerosRomanos2;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MetodoNumRomanos {
	public String RomanosMetodo(String numeroingreso){
		
		 String[] unDigito = {" ", "i","ii","iii", "iv","v", "vi","vii","viii","ix"};
	        String[] dosDigitos = {"x", "xx", "xxx", "xI", "I", "Ix", "Ixx", "Ixxx", "Ic"};
	       String[] tresDigitos = {"c", "cc", "cc", "cd", "d", "dx", "dxx", "xdxx", "dm"};
	       String [] cuatroDigitos={"m","mm","mmm"};
	        
	        String[] excepciones = {"xi", "xii", "xiii", "xiv", "xv"};
	        String numeroRomano = "";
	        String numeroIngreso="";
	        String cadena=".*[a-zA-Z].*";
	        boolean invalido2=true;
	        int numero=0;
	        
	        
	        do{
	     	  
	        	numeroIngreso = numeroingreso;
	     	   Pattern pat = Pattern.compile(cadena);
	            Matcher mat = pat.matcher(numeroIngreso);
	            
	                if (mat.matches()) {
	                invalido2=true;
	                return "nose pueden ingresar letras ";
	                 } else {
	               invalido2 = false; 
	              
	                 }
	     	    } while (invalido2!=false);
	        
	        
	        
	        do {
				
	        	numero=Integer.parseInt(numeroIngreso);

			       
			}while( numero<0 || numero> 3499 ); 
	       
	        
	        int divisionEntera =0;
	        int divisionEntera2 =0;
	        int divisionEntera3 =0;
	        int resto = numero%10;
	        int resto2 = 0;
	        int resto3 =0;
	        
	        if(numero > 10 && numero < 16){
	            
	            numeroRomano += excepciones[resto - 1];
	        }else if (numero > 9 && numero < 99){
	        	divisionEntera =(int)(numero/10);
	            numeroRomano += dosDigitos[divisionEntera-1]  + unDigito[resto];
	        }else if (numero > 99 && numero < 999){
	        	divisionEntera2=(int)(numero/100);
	        	resto=numero%100;
	        	divisionEntera = (int)(resto/10);
	        	resto2=resto%10;
	        	
	            numeroRomano += tresDigitos [divisionEntera2-1]+ dosDigitos[divisionEntera-1]  + unDigito[resto2 -1];
	        }else if (numero > 999 && numero< 3500 ){
	        	
	        	divisionEntera3 =(int)(numero/1000);
	        	resto3=numero%1000;
	        	divisionEntera2=(int)(resto3/100);
	        	resto=resto3%100;
	        	divisionEntera =(int)(resto/10);
	        	resto2=resto%10;
	        	
	        	
	        	
	            numeroRomano += cuatroDigitos[divisionEntera3-1] + tresDigitos [divisionEntera2-1] + dosDigitos[divisionEntera-1]  + unDigito[resto2];
	        
	        }else{
	            
	            numeroRomano += unDigito[resto];
	        }
	        
	        
	        return numeroIngreso + "  =  " + numeroRomano; 
	        
	        
	}


}
